#ifndef _ENTITY_H
#define _ENTITY_H

#include <allegro.h>
#include "../../common/helpers.h"

class Entity {
    public:
        Entity();
        /* How does this differ from getGraphic()?
         * Also, does this need to be virtual?
         */
        virtual BITMAP* draw();
        virtual ~Entity();

        /* Removes the entity. */
        virtual void dispose() = 0;
        
        /* Set the graphic of the entity. */
        void setGraphic(BITMAP*);

        /* Fetch the graphic of the entity. */
        BITMAP* getGraphic() const;
        
        /* The entity is not drawn if it's inactive. */
        bool isActive() const;
        
        /* Actives or inactives the entity.
         * If inactive, the entity is not to be drawn.
         */
        void setActive(bool);

        /* Returns the position, width & height of the entity. */
        Rect* getPos() const;
        
        /* Set the position, width & height of the entity */
        void setPos(Rect*);

    private:
        BITMAP* mGraphic; /* the graphic for the entity */
        Rect* mPos; /* This obviously also contains width and height */
        bool mIsActive;
};

#endif /* _ENTITY_H */
